package com.zbcn.GOF.singleton;

/**
 * 内部类模式的单例模式
 */
public class SingletonIn {

    private SingletonIn() {
    }

    private static class SingletonHandle{
        private static SingletonIn singletonIn = new SingletonIn();
    }

    /**
     * 内部类[推荐用]
     * 这种方式跟饿汉式方式采用的机制类似，但又有不同。
     * 两者都是采用了类装载的机制来保证初始化实例时只有一个线程
     * 不同:
     * 在饿汉式方式是只要Singleton类被装载就会实例化,
     * 内部类是在需要实例化时，调用getInstance方法，才会装载SingletonHolder类
     * 优点：避免了线程不安全，延迟加载，效率高。
     * @return
     */
    public SingletonIn getSingletonIn(){
        return SingletonHandle.singletonIn;
    }


}
